package javaClassExercise.referencesSort;

import org.junit.Test;

import java.util.Arrays;

/**
 * Created by lomo on 2017/3/18.
 */
public class referencesTypeSortTest {

    public static void main(String[] args) {
//        User users = new User("lomo2", "female", 33);
//        System.out.println(users.getAge()); //33

        User[] users = new User[]{ new User("lomo", "male", 22),
                new User("lomo2", "female", 20), new User("cd", "gender", 18)};

        Arrays.sort(users, new UserComparator());

        for (User user : users) {
            System.out.println("姓名：" + user.getName() + " 性别：" + user.getGender() + " 年龄：" + user.getAge());
        }

        /** 输出：
         姓名：cd 性别：gender 年龄：18
         姓名：lomo2 性别：female 年龄：20
         姓名：lomo 性别：male 年龄：22
         */

    }

    @Test
    public void testReferenceTypeSort() {
        User[] users = new User[]{new User("name", "male", 22), new User("name2", "female", 18)};

        Arrays.sort(users, new UserComparator());
        for (User user : users) {
            System.out.println(user.getGender());
        }

        //输出：
        /**
         *   female
              male
         */

        for (User user : users) {
            System.out.println(user.getName());
        }
        //输出:
        /**
         * name2
           name
         */
    }

    //通过对Test测试，发现Arrays.sort排序好像是以其中的年龄进行升序排序，
    // 其实不，是因为：UserComparator类的排序方法声明就是以User类中的Age字段进行排序
    // UserComparator类，其实现的是接口：Comparator，该接口中的方法compare声明如下：int compare(T o1, T o2); [接口中的方法默认为：public abstract修饰！]
}
